Cell based communications networks such as asynchronous transfer ("ATM") networks are used to transfer audio, video, and data. ATM networks transfer data by routing data units such as ATM cells from a source to a destination through switches. Switches include input/output ports through which ATM cells are received and transmitted.
Existing ATM switches can be divided into several classes. One type of switch uses one large queue as a buffer and controls the access of individual virtual connections to bandwidth on a statistical basis. As a general matter, each virtual connection through this type of switch shares one large buffer and each virtual connection statistically shares the available bandwidth of the switch and/or on an output link connected to the switch. This approach suffers from several disadvantages. Depending upon the type of traffic traveling through an ATM network, one may want to control certain network service parameters associated with that traffic type. Examples of parameters that may be desirably controlled by an ATM network include a connection's delay variation, its end-to-end delay, its maximum data loss, its access to guaranteed bandwidth, its access and priority of access to shared bandwidth, and its delivery priority. Unfortunately, ATM switches employing the above approach cannot create quality of service guarantees on a per connection basis or even provide quality of service (QOS) guarantees on a per traffic type basis. Instead, quality of service guarantees can only be statistical in nature. In addition, head of line blocking in this approach can block connections behind the blocked connection.
A second approach employs a plurality of queues in each switch and allocates switch bandwidth statistically. Further refinements of this approach may assign particular connections to a particular queue based upon a characteristic of the connection such as the traffic type of the connection or the group from which the connection originated. In general, this approach is characterized by sharing each of a plurality of queues by a plurality of connections and sharing the switch bandwidth and/or output link bandwidth among all connections. This approach also has several disadvantages. Quality of service based upon the above parameters can only be guaranteed on a per queue basis and the guarantees that can be made for low priority traffic are not strong guarantees. In addition, the quality of service guarantees for multiple queues can only be made on a statistical basis rather than on a per connection basis. This approach also suffers from head of line blocking in each individual queue. Thus, certain connections may block other connections behind it.
A third approach uses a plurality of queues and assigns a plurality of connections to each queue and allocates either switch bandwidth and/or link bandwidth on a per queue basis. This approach also suffers from several disadvantages. Again, the quality of network service can only be guaranteed on a per queue basis rather than on a per connection basis. Also, unused allocated switch bandwidth and/or link bandwidth cannot be used by another queue. Accordingly, this bandwidth remains unused, resulting in an inefficient use of system resources.